package com.yuw.dz.tools;

import java.util.Arrays;
import java.util.Scanner;

public class TestDriver {
    public static void main(String[] args) {
        test01();
        System.out.println("=========================================");
        test03();
        System.out.println("=========================================");
        test04();
        System.out.println("=========================================");
        test05();
    }
    /**
     * 包装类工具类:String 包装类 基本类型之间的转换关系
     */
    public static void test06() {
        int i = 10;
        Integer ii = i;
        int i1 = ii;
        String strI = String.valueOf(i);
        String strI1 = String.valueOf(ii);
        Integer ii1 = Integer.valueOf(i);
    }
    /**
     * Scanner工具类进行文本输入
     */
    public static void test05() {
        System.out.println("请输入一段文字，以空白字符结束：");
        // 创建一个Scanner的实例对象
        Scanner sc = new Scanner(System.in); // 构造方法的参数System.in是固定的
        // 获取控制台输入的值
        //String str0 = sc.next(); // next遇到空白字符输入结束
        String str0 = sc.nextLine(); // next遇到换行符输入结束
        System.out.println("str0:" + str0);

        // int值
        int val0 = sc.nextInt();
        System.out.println("val0:" + val0);
    }

    /**
     * Arrays工具类进行数组扩容
     */
    public static void test04() {
        // 旧数组
        int[] arr = {1, 2, 3, 4, 5};

        // 数组扩容到长度为10
        int[] arrNew = Arrays.copyOf(arr, 10);

        // 将原数组的地址引用改为新数组的地址引用
        arr = arrNew;
        // arr就通过复制的方式扩容到长度为10
        for (int i : arr) {
            System.out.print(" " + i);
        }
        // 换行
        System.out.println();
        System.out.println("---------------------------------------------");
        // 除此之外，System类中也提供了一个类似的数组复制的方法
        // 扩容：保留arr原数组的后三个元素，并扩容长度为10，放在新数组的开始位置
        // 创建新扩容的数组
        int[] arrNew1 = new int[10];
        // 复制
        System.arraycopy(arr, 2, arrNew1, 0, 3);
        // 将原数组的地址引用改为新数组的地址引用
        arr = arrNew1;
        // arr就通过复制的方式扩容到长度为10
        for (int i : arr) {
            System.out.print(" " + i);
        }
        // 换行
        System.out.println();
    }

    /**
     * Object 工具类的常用方法
     */
    public static void test03() {
        Object obj;
        int[] arr = new int[5];
        System.out.println("arr:" + arr);
        System.out.println("--------------------------------------");
        // String类重写Object类的equals方法
        String str0 = new String("xiaoming");
        String str1 = new String("xiaoming");

        System.out.println(str0 == str1); // 判定的地址（以hashcode码作为对比）
        System.out.println(str0.equals(str1)); // 判定的是内容

    }

    /**
     * String、StringBuilder 工具类的常用方法
     */
    public static void test02() {
        String str0 = "";
        str0 += "a ";
        str0 = str0 + "b ";

        // StringBuilder
        StringBuilder stringBuilder = new StringBuilder();
        // 拼接
        stringBuilder.append("a ");
        stringBuilder.append("b ");
        String str1 = stringBuilder.toString();
    }

    /**
     * String 工具类的常用方法
     */
    public static void test01() {
        // String 工具类的常用方法
        String str0 = "hamburger".substring(4, 8);
        System.out.println("substring:" + str0);
        System.out.println("mesquite in your cellar".replaceFirst("e", "o"));

        System.out.println("hamburger".charAt(1));
        // split
        String[] arrStrs = "boo:and:foo".split(":");
        for (String str : arrStrs) {
            System.out.println(str);
        }
    }
}
